/**
 * Iniciação Científica - SAE-CNPQ - 2013/2013
 * autor: Agnaldo A Esmael
 * Orientadores: Prof. Dr Ricardo Torres e Dr. Jefersson A Santos
 */

package control;

import java.awt.Color;

import javax.swing.JDesktopPane;

/**
 * Interface criada com o objetivo de deixar as futuras modificacoes da GUI mais faceis
 * 
 * Os metodos  que implementam as ActionListeners de cada classe que compem a GUI devem chamar
 * os metodos desta interface.
 * 
 * @author agnaldo
 *
 */
public interface EventosGUI {

	/**
	 * Abrir janela JFileChooser para selecionar imagem que será classificada e printá-la na tela principal
	 */
	 public boolean openImage();

	/**
	 * Finalizar programa
	 */
	public void exitProgramm();

	/**
	 * Modificar a cor de anotação de uma classe e repintar a tela como a nova cor
	 */
	public void setColorClass(Color novaCor, int classe);

	/**
	 * Verificar se botão "Selection" está ativado
	 */
	public boolean isInSelection();

	/**
	 * Atualizar a classe que está selecionada para marcação do usuário
	 */
	public void setClassCurrent(int classeAtual);

	/**
	 * obter a classe que está selicionada para marcação atualmente
	 */
	public int getClassCurrent();

	/**
	 * modificar o tamanho da imagem na tela conforme a alterção feita no zoom
	 */
	public void modificarZoom(float valorZoom);

	/**
	 * Ativar a operação de anotação do usuário 
	 */
	public void startSelection(boolean ativar);

	/**
	 * Iniciar a classificação no modo "Auto"
	 */
	public void startAuto();

	/**
	 * Iniciação a classificação no modo "Interactive"
	 */
	public void startInteractive();

	/**
	 * Selecionar a imagem que será aberta na sequencia. Esta imagem ficará salva na classe Dados
	 * @return TODO
	 */
	public boolean selectImage();

	
	/**
	 * Inicia nova rodada de classificação, após usuário ter feito nova marcação de pixels
	 */
	public boolean nextIteraction();

	/**
	 * Apresentar para usuário imagem com novas regiões que devem ser anotadas		
	 */
	 void newUserAnotation();

	/**
	 * Finaliza a classificação. Ocorre quando o usuário julga que obteve uma classificação boa e clica em 'Finalize' na janela interativa
	 */
	public void finishClassification();

	/**
	 * Prepara o sistema para um novo processo de classificação. Limpa todos os dados anteriores.
	 */
	 void cleanData();
	

}//fim da Interface EventosGUI
